home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / mcomm557.zip / CASM.INC < prev    next >
Text File  |  1993-09-11  |  4KB  |  163 lines

  1. ;**************************************************************************
  2. ; STANDARD INCLUDE FILE FOR MASM 5.1 MODULES LINKED WITH 'C' PROGRAMS
  3. ;  defines common equates
  4. ;**************************************************************************
  5.  
  6. ;  Mike Dumdei,  6 Holly Lane,  Texarkana TX  75503
  7.  
  8. IFNDEF ??version
  9.  IF1START EQU <IF1>
  10.  IF1END EQU <ENDIF>
  11. ELSE
  12.  IF1START EQU <>
  13.  IF1END EQU <>
  14. ENDIF
  15.  
  16. % IF1START
  17.  
  18. ;------ Define external procedures/variables macros -----
  19.  
  20. IMPORT  macro   typ, list
  21. ifdifi  <typ>,<PTRS>
  22.         irp     x,<list>
  23.         extrn   x:typ
  24.         endm
  25. endif
  26. ifidni  <typ>,<PTRS>
  27.   if @DataSize
  28.         irp     x,<list>
  29.         extrn   x:DWORD
  30.         endm
  31.   else
  32.         irp     x,<list>
  33.         extrn   x:WORD
  34.         endm
  35.   endif
  36. endif
  37.         endm
  38.  
  39. GLOBE   macro   typ, list
  40. ifidni      <typ>,<BYTE>
  41.         irp     x,<list>
  42.   x     LABEL   typ
  43.         public  x
  44.         db      0
  45.         endm
  46. elseifidni  <typ>,<WORD>
  47.         irp     x,<list>
  48.   x     LABEL   typ
  49.         public  x
  50.         dw      0
  51.         endm
  52. else
  53.         irp     x,<list>
  54.   x     LABEL   typ
  55.         public  x
  56.         endm
  57. endif
  58.         endm
  59.  
  60. ;------- Mixed memory model macros ----------------------
  61. ;  Compatible with MicroSoft's MIXED.INC macros except
  62. ; this ifFP works with multiple operand instructions.
  63. ; Also an ifNP (if Near Pointers) macro is added.
  64. IF @DataSize                ;FAR DATA MODEL
  65.     FP      EQU     <es:>
  66.     ifFP    MACRO   a,b,c,d,e
  67.             IFNB <c>
  68.         a b,c d e
  69.             ELSE
  70.         a b
  71.             ENDIF
  72.             ENDM
  73.     ifNP    MACRO   a,b,c,d,e
  74.             ENDM
  75.     pLes    MACRO   a,b
  76.         les     a,b
  77.             ENDM
  78.     pLds    MACRO   a,b
  79.         lds     a,b
  80.             ENDM
  81. ELSE                        ;NEAR DATA MODEL
  82.     FP      EQU     <>
  83.     ifFP    MACRO   a,b,c,d,e
  84.             ENDM
  85.     ifNP    MACRO   a,b,c,d,e
  86.             IFNB <c>
  87.         a b,c d e
  88.             ELSE
  89.         a b
  90.             ENDIF
  91.             ENDM
  92.     pLes    MACRO   a,b
  93.         mov     a,b
  94.             ENDM
  95.     pLds    MACRO   a,b
  96.         mov     a,b
  97.             ENDM
  98. ENDIF
  99.  
  100. ;--- Macro to fix problem with naming the code segment --
  101. _CODE   MACRO   textname
  102. IF @CodeSize
  103.         ASSUME cs:textname
  104.         .CODE   textname
  105. ELSE
  106.         .CODE
  107. ENDIF
  108.         ENDM
  109.  
  110. ;------- Procedure macros -------------------------------
  111. PUBLICPROC      MACRO   PNAME
  112.         PUBLIC  PNAME
  113. IF @CodeSize
  114. PNAME           LABEL   FAR
  115. ELSE
  116. PNAME           LABEL   NEAR
  117. ENDIF
  118.         ENDM
  119.  
  120. LOCALPROC       MACRO   PNAME
  121. PNAME           LABEL   NEAR
  122.         ENDM
  123.  
  124. LOCPUBPROC      MACRO   PNAME
  125.         PUBLIC  PNAME
  126. PNAME           LABEL   NEAR
  127.         ENDM
  128.  
  129. calln           MACRO   TNAME
  130.         call    Near Ptr TNAME
  131.         ENDM
  132.  
  133. callf           MACRO TNAME
  134.         call    Far Ptr TNAME
  135.         ENDM
  136.  
  137. IF @CodeSize
  138.  BOFST  =       6
  139. ELSE
  140.  BOFST  =       4
  141. ENDIF
  142.  
  143. ;------- USEFUL EQUATES -------------------------------
  144. s       EQU     <SHORT>
  145. n       EQU     <NOT>
  146. OFST    EQU     <OFFSET>
  147. BPTR    EQU     <Byte Ptr>
  148. WPTR    EQU     <Word Ptr>
  149. bBP     EQU     <Byte Ptr [BP]>
  150. wBP     EQU     <Word Ptr [BP]>
  151. bBX     EQU     <Byte Ptr [BX]>
  152. wBX     EQU     <Word Ptr [BX]>
  153. bSI     EQU     <Byte Ptr [SI]>
  154. wSI     EQU     <Word Ptr [SI]>
  155. bDI     EQU     <Byte Ptr [DI]>
  156. wDI     EQU     <Word Ptr [DI]>
  157. bDG     EQU     <Byte Ptr DGROUP>
  158. wDG     EQU     <Word Ptr DGROUP>
  159. ofDG    EQU     <OFFSET DGROUP>
  160. DG      EQU     <DGROUP>
  161.  
  162. % IF1END
  163.